#include <stdio.h>
#include <aio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

#include <stdlib.h>

#define BUF_SIZE 1024

int main(int argc, char const *argv[])
{
    struct aiocb cb = {0};
    
    int fd = open("a.txt", O_RDONLY|O_EXCL);
    if(fd <  2){
        perror("open");
        return -1;
    }

    cb.aio_buf = calloc(1, BUF_SIZE);
    cb.aio_fildes = fd;
    cb.aio_nbytes = BUF_SIZE;
    cb.aio_offset=0;
    
    if(-1==  aio_read(&cb)){
        perror("aio_read");
        goto exit__;
    }

    while(aio_error(&cb));  // 等待AIO 读取完成

    // 获取数据
    int datasize = aio_return(&cb);
    if(datasize > 0){
        printf("data: %s", (char *)cb.aio_buf);
    }

exit__:
   free((void *)cb.aio_buf);
   close(fd);
    return 0;
}
